# -*- codeing = utf-8 -*-
# @Time : 2021/2/26 15:27
# @Atuthor: 朱朱
# @File: 110对象属性和类属性的区别.py
# @Software: PyCharm
class Person(object):
    type = '人类'     # 这个属性定义在类里,函数之外,我们称之为类属性

    def __init__(self,name,age):
        self.name = name
        self.age = age

# 对象 p1和p2 是通过 Person 类创建出来的实例对象
# name 和 age 是对象属性，在__init__ 方法里，以参数的形式定义的
# 每一个实例对象都会单独保存一份的属性
# 每个实例对象之间的属性没有关联，互不影响
p1 = Person('张三', 18)
p2 = Person('李四', 19)

# 类属性可以通过类对象获取
print(Person.type)
# 类属性可以通过实例对象获取
print(p1.type)
print(p2.type)
print('----------------------')

p1.type = '男人' # 修改实例对象获取类的属性,并不会修改类属性
print(p1.type) # 只是给实例对象添加了一个新的对象属性
print(Person.type)  # 人类
print('-------------------------')

Person.type='女人' # 类属性只能通过类对象来修改
print(Person.type) # 女人
print(p1.type) # 男人 # 前面已对生成新的实例属性,不再调用类属性
print(p2.type) # 女人 # 随类属性变化而变化
